/**
*  \file muldiv.h
*
*  \brief   multiplies inputs a and b and the result is divided by input 3
*           input c has to be unlike 0
*
*  \author  Jocelyn Francois <yves-jocelyn.francois@linde-mh.de>
*  \author  Michael J. Hohmann  <michael.hohmann@linde-mh.de>
*
*
*/

#ifndef MULDIV_H_INCLUDED
#define MULDIV_H_INCLUDED

/*================================================[ public includes  ]================================================*/
#include "../cfg/prj.h"
//#include "../cfg/muldiv_cfg.h"

/*================================================[ public defines   ]================================================*/

/*================================================[ public datatypes ]================================================*/

/*================================================[ public variables ]================================================*/

/*================================================[ public functions ]================================================*/

STATIC_INLINE   S8  muldiv_s8 ( S8 a,  S8 b,  S8 c)
{
   return (S8) ( ((S16)a * (S16)b) / c );
}

STATIC_INLINE   U8  muldiv_u8 ( U8 a,  U8 b,  U8 c)
{
   return (U8) ( ((U16)a * (U16)b) / c );
}

STATIC_INLINE  S16 muldiv_s16 (S16 a, S16 b, S16 c)
{
#ifdef MULDIV_S16
   return (S16) MULDIV_S16(a,b,c);
#else
   return (S16) ( ((S32)a * (S32)b) / c );
#endif
}

STATIC_INLINE  U16 muldiv_u16 (U16 a, U16 b, U16 c)
{
#ifdef MULDIV_U16
   return (U16) MULDIV_U16(a,b,c);
#else
   return (U16) ( ((U32)a * (U32)b) / c );
#endif
}

/*====================================================================================================================*/

#endif

/***********************************************************************************************************************
*                             Copyright 2008,2011 Linde Material Handling. All rights reserved.                        *
***********************************************************************************************************************/
